Coded light refers to a technique whereby data is modulated into the visible illumination emitted by a light source, e.g. by an LED based luminaire. Thus in addition to providing illumination (for which purpose a light source may already be present in an environment), the light source also acts as a transmitter capable of transmitting data to a suitable receiver of coded light. The modulation is typically performed at a high enough frequency that it is imperceptible to human vision, i.e. so the user only perceives the overall illumination and not the effect of the data being modulated into that illumination. In this way the data may be said to be embedded into the light from the light source.
Coded light can be used in a number of applications. For instance, one application is to provide information from a luminaire to a remote control unit for controlling that luminaire, e.g. to provide an identifier distinguishing it amongst other such luminaires which the remote unit can control, or to provide status information on the luminaire (e.g. to report errors, warnings, temperature, operating time, etc.). In one such example, the remote control unit may comprise a mobile user terminal such as a smart phone or tablet having an inbuilt camera. With the terminal running a suitable application, the user can direct the camera at a luminaire and thereby detect the identifier coded into the light from that luminaire. Given the identifier of the luminaire it is looking at, the terminal may then control that luminaire by sending back a return signal (e.g. via RF).
In another application the coded light may be used to provide information to a user, e.g. to provide identifiers of the luminaires for use in commissioning, or to enable provision of location related information. For example each luminaire in an indoor and/or outdoor environment (e.g. in the rooms and corridors of an office complex, and/or paths of a campus) may be arranged to emit light embedded with a respective identifier identifying it within that environment. If a user has a mobile terminal equipped with a camera, and an associated application for detecting coded light, the terminal can detect the identifier of a luminaire illuminating its current location. This can then be used to help the user navigate the environment, by looking up the current location in location database mapping the identifiers to locations of the luminaires. Alternatively or additionally, this may be used to look up information associated with the user's current location, such as information on exhibits in particular rooms of a museum. E.g. the look up may be performed via the Internet or a local network to which the terminal has access, or from a local database on the user terminal. Alternatively the information could be directly coded into the light from one or more luminaires. Generally speaking, the applicability of coded light is not limited.
Data is modulated into the light by means of a technique such as amplitude keying or frequency shift keying, whereby the modulated property (e.g. amplitude or frequency) is used to represent channel symbols. The modulation typically involves a coding scheme to map data bits (sometimes referred to as user bits) onto such channel symbols. An example is a conventional Manchester code, which is a binary code whereby a user bit of value 0 is mapped onto a channel symbol in the form of a low-high pulse and a user bit of value 1 is mapped onto a channel symbol in the form of a high-low pulse. Another example is the recently developed Ternary Manchester code, described in international patent application publication no. WO2012/052935.
There is a growing interest in using coded light in applications where the light from a light source is to be captured using a rolling shutter camera, such as the cheap cameras often found in mobile phone devices. A rolling shutter camera scans the lines of the image one at a time, line-by-line (typically at a minimum of 18k lines/s). As the lines are recorded time-sequentially, and the codes in the light may also vary time-sequentially, additional processing is involved. Typically the samples on a line are “integrated” or “condensed” into a single value per line. Each line thus captures a sample of the signal at a different moment in time, enabling the coded light signal to be reconstructed.
Some digital data streams, especially high-speed serial data streams are sent without an accompanying clock signal. The receiver generates a clock from an approximate frequency reference, and then phase-aligns to the transitions in the data stream with a phase locked loop (PLL). This process is commonly known as clock and data recovery (CDR).
A coded light receiver based on a rolling-shutter camera may not receive data in a continuous stream. Rather, it may receive a message in short, interrupted portions, with each portion being received in a respective frame. E.g. this may occur because the light source only covers a small number of lines within the frame area, and therefore each frame only captures a small part of the message. The frame rate and line rate of the camera are not typically synchronized with the transmission of the message, and therefore in general the portion received in one frame does not necessarily follow immediately on from the point in the message at which previous portion ended. This means that to reconstruct the message, these portions have to be time-aligned to the right position in the message by means of a reassembly process, also called “stitching”. Because the samples are not received in a continuous stream, a standard PLL (phase-locked loop) solution cannot be used to recover the clock.